인텔 80286
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
인텔 80286은 인텔이 1982년 2월 1일에 발표하고 1984년부터 출시한 16비트 x86 마이크로프로세서이다. 8086과 소프트웨어적으로 호환되며, 16MB의 물리 메모리와 1GB의 가상 메모리를 지원하고, 보호 모드를 통해 멀티태스킹을 가능하게 했다. 초기 클럭 속도는 6, 8, 10, 12MHz였으며, AMD, 해리스 등에서도 세컨드 소스 제품이 생산되었다. 80286은 8086에 비해 성능이 향상되었지만, 보호 모드에서 리얼 모드로의 전환 문제와 DOS 프로그램과의 호환성 문제로 인해 80386의 등장 이후에는 널리 사용되지 않았다.
더 읽어볼만한 페이지
- 16비트 마이크로프로세서 - 인텔 8086
인텔 8086은 1978년 인텔에서 개발한 16비트 마이크로프로세서로, 8비트 프로세서인 인텔 8080을 확장하여 20비트 어드레스 버스를 통해 1MB의 메모리 공간을 지원하며 IBM PC에 채택되어 x86 아키텍처의 상업적 성공을 이끌었다. - 16비트 마이크로프로세서 - 인텔 8088
인텔 8088은 8비트 외부 데이터 버스를 가진 16비트 마이크로프로세서로, IBM PC에 채택되어 x86 아키텍처 프로세서 발전의 중요한 기반이 되었다. - 인텔의 마이크로프로세서 - 인텔 80386
인텔 80386은 1985년 출시된 x86 아키텍처의 32비트 마이크로프로세서로, 온칩 메모리 관리 장치, 3단계 파이프라인, 세 가지 동작 모드를 제공하며, 개인용 컴퓨터와 임베디드 시스템에 널리 사용되었지만 현재는 생산 및 지원이 중단되었고, 32비트 명령어 집합은 현대 x86 아키텍처의 기반이 되었다. - 인텔의 마이크로프로세서 - 인텔 4004
인텔 4004는 1971년 인텔에서 출시된 세계 최초의 상용 마이크로프로세서 중 하나이며, 4비트 아키텍처를 기반으로 계산기 라인에 탑재하기 위해 개발되었고, 컴퓨터 소형화와 개인용 컴퓨터 시대에 기여했다. - 인텔 x86 마이크로프로세서 - 인텔 80386
인텔 80386은 1985년 출시된 x86 아키텍처의 32비트 마이크로프로세서로, 온칩 메모리 관리 장치, 3단계 파이프라인, 세 가지 동작 모드를 제공하며, 개인용 컴퓨터와 임베디드 시스템에 널리 사용되었지만 현재는 생산 및 지원이 중단되었고, 32비트 명령어 집합은 현대 x86 아키텍처의 기반이 되었다. - 인텔 x86 마이크로프로세서 - 인텔 4004
인텔 4004는 1971년 인텔에서 출시된 세계 최초의 상용 마이크로프로세서 중 하나이며, 4비트 아키텍처를 기반으로 계산기 라인에 탑재하기 위해 개발되었고, 컴퓨터 소형화와 개인용 컴퓨터 시대에 기여했다.
인텔 80286 | |
---|---|
개요 | |
![]() | |
제조사 | 인텔, IBM, AMD, 해리스 (인터실), 지멘스, 후지쯔 |
생산 시작 | 1982년 2월 |
생산 종료 | 1991년 |
최소 클럭 속도 | 4 MHz |
최대 클럭 속도 | 25 MHz |
최소 FSB | 4 MHz |
최대 FSB | 25 MHz |
트랜지스터 수 | 120,000개 또는 134,000개 (1.5 μm) |
아키텍처 | x86-16 (MMU 포함) |
패키지 | 68핀 PLCC 68핀 LCC 68핀 PGA 100핀 PQFP (엔지니어링 샘플 전용) |
이전 프로세서 | 8086, 8088 (80186은 동시대 제품) |
다음 프로세서 | 인텔 80386 |
코프로세서 | 인텔 80287 |
데이터 너비 | 16비트 |
주소 너비 | 24비트 |
최소 공정 크기 | 1.5 μm |
소켓 | PGA68 PLCC-68 LCC-68 |
지원 상태 | 지원 중단 |
역사적 의의 | |
설명 | 마이크로프로세서 명예의 전당 헌액 |
추가 정보 | |
프로그래머 참조 | iAPX 286 프로그래머 참조 (1983) |
2. 역사
인텔 최초의 80286 칩은 최대 클럭 속도 4, 6, 8 MHz로 출시되었으며, 이후 12.5 MHz 모델도 출시되었다. AMD와 해리스는 각각 16 MHz, 20 MHz, 25 MHz 버전의 80286을 생산하여 경쟁했다.[9][10] 인텔, 인터실, 후지쯔는 배터리 구동 장치를 위한 CMOS 버전의 80286 (80C286)을 설계하기도 했다.
80286의 후기 E-스테핑 레벨은 이전 버전의 오류들이 수정되었다. 1985년경, 인텔은 후지쯔 리미티드에 80286의 세컨드 소스를 제공했다.[11]
1982년 2월 1일에 발표되어 1984년부터 6MHz 버전과 8MHz 버전이 출하되었다. 134,000개의 트랜지스터를 집적한 1.5μm의 NMOS 공정(인텔의 명칭으로는 HMOS-III)으로 제조되었으며, 성능을 대폭 증가시키는 파이프라인을 구성하는 4개의 독립된 유닛(어드레스 유닛, 버스 유닛, 명령 유닛, 실행 유닛)을 갖추고 있었다. 클럭 주파수는 6, 8, 10, 12MHz가 있었다. 패키지에는 68핀 PLCC, LCC, PGA가 있었다.
8086과 소프트웨어의 상위 호환성을 가졌으며, 동일 클럭의 8086 대비 약 2.5배 빠르게 명령을 실행할 수 있었다. 또한, 물리 메모리 공간이 16MB로 확장되었으며, 1GB의 가상 메모리와 멀티태스킹 처리를 지원한다.
인텔은 이 모델까지 세컨드 소스 추진 전략을 채택했기 때문에, AMD, 후지쯔, 지멘스, Harris Corporation영어(이하, 해리스)에서도 세컨드 소스 제품이 공급되었다. 특히 AMD와 해리스는 80386에 대항하기 위해 더 높은 클럭의 80286을 시장에 투입했다.
2. 1. 성능
80286은 "일반적인" 프로그램에서 약 0.21 클럭당 명령어(IPC) 속도를 보였다.[9] 그러나 최적화된 코드와 타이트한 루프에서는 많은 명령어가 각각 2 클럭 사이클 내에 실행될 수 있어 훨씬 더 빨랐다. 6 MHz, 10 MHz 및 12 MHz 모델은 각각 0.9 MIPS, 1.5 MIPS 및 2.66 MIPS로 측정되었다.[10]3. 아키텍처
80286은 134,000개의 트랜지스터를 포함하며, 8086과 마찬가지로 주소 장치, 버스 장치, 명령 장치, 실행 장치의 4개 독립적인 장치로 구성된 파이프라인 구조를 가졌다.[19] 68핀 PLCC (플라스틱 리드 칩 캐리어), LCC (무연 칩 캐리어), PGA (핀 그리드 배열) 패키지로 생산되었다.[19]
8086(또는 8088)에 비해 80286의 성능은 크게 향상되었는데, 많은 프로그램에서 클럭 사이클당 100% 이상, 즉 동일 클럭 속도에서 성능이 두 배 향상되었다.[20] 이는 i486 (1989) 또는 초기 펜티엄 (1993)이 출시되었을 때의 속도 향상과 비교할 만한 큰 증가였다. 이러한 성능 향상은 주소 및 데이터 버스가 다중화되지 않았고, 베이스+인덱스와 같은 주소 계산 비용이 적게 들었기 때문이다.[20] 80286에서는 전용 장치에서 이러한 계산을 수행했지만, 이전 8086은 일반 ALU를 사용하여 유효 주소를 계산해야 했고, 많은 경우에 추가적인 여러 클럭 사이클을 소모했다. 또한 80286은 이전 모델보다 명령의 프리페치, 버퍼링, 점프 실행 및 MUL / DIV과 같은 복잡한 마이크로코드 수치 연산에서 더욱 효율적이었다.[20]
80286은 8086 및 80186의 모든 명령어 외에 보호 모드를 위한 새로운 명령어 ARPL, CLTS, LAR, LGDT, LIDT, LLDT, LMSW, LSL, LTR, SGDT, SIDT, SLDT, SMSW, STR, VERR, VERW를 추가했다.[20] 보호 모드를 위한 일부 명령어는 실제 모드에서 보호 모드를 설정하고 전환하는 데 사용될 수 있으며(또는 사용해야 함) (SMSW 및 LMSW와 같은) 일부는 실제 모드 자체에 유용하다.
인텔 80286은 24비트 주소 버스를 가지고 있었고, 따라서 이전 x86 프로세서의 1 MB 주소 공간에 비해 16 MB의 물리적 주소 공간을 가지고 있었다. 이는 세그먼테이션을 통해 최대 1 GB를 지원하는 가상 메모리를 지원하는 최초의 x86 프로세서였다.[21]
4. 특징
80286은 이전 모델인 8086에 비해 여러 가지 향상된 기능을 제공했다. 그 중 가장 주목할 만한 특징은 다음과 같다.
- 보호 모드 지원: 80286은 x86 CPU 제품군 중 최초로 보호 모드를 지원했다. 온칩 메모리 관리 장치(MMU)를 갖춘 최초의 상업용 마이크로프로세서이기도 했다.
- 멀티태스킹: 보호 모드 지원으로, IBM 호환 기종은 처음으로 고급 멀티태스킹 운영 체제를 갖추게 되었고, 유닉스가 지배적인 네트워크 서버/워크스테이션 시장에서 경쟁할 수 있게 되었다.
- 보안: 보호 모드는 무단 액세스를 방지하는 기능을 제공했는데, 이는 데이터, 코드 및 스택에 대해 서로 다른 세그먼트를 형성하고 겹치지 않도록 하며, 각 세그먼트에 권한 수준을 할당하여 낮은 권한 수준의 세그먼트가 높은 권한 수준의 세그먼트에 액세스할 수 없도록 하는 방식으로 구현되었다.
- 새로운 명령어 및 예외: 보호 모드를 지원하기 위해 ARPL, VERR, VERW, LAR, LSL, SMSW, SGDT, SIDT, SLDT, STR, LMSW, LGDT, LIDT, LLDT, LTR, CLTS 와 같은 새로운 명령이 추가되었다. 또한 잘못된 opcode, 코프로세서 사용 불가, 더블 폴트, 코프로세서 세그먼트 오버런, 스택 폴트, 세그먼트 오버런/일반 보호 폴트 및 보호 모드 전용 오류를 포함한 새로운 예외(내부 인터럽트)가 있다.
- 다양한 수치 연산: 80286(및 코프로세서 인텔 80287)에서 산술 연산은 부호 없는 팩 십진수, 부호 없는 이진수, 부호 없는 언팩 십진수, 부호 있는 이진수, 부동 소수점 숫자(80287에서만) 등 다양한 유형의 숫자에 대해 수행할 수 있었다.
- 실 모드로의 복귀 문제: 80286은 하드웨어 리셋 없이는 보호 모드에서 8086 호환 ''실 주소 모드''("실 모드")로 돌아갈 수 없도록 설계되었다.[40][41]
- 소프트웨어 리셋: 1984년 PC/AT 출시 당시, IBM은 외부 회로, ROM BIOS, 8042 키보드 마이크로컨트롤러에 특수 코드를 추가하여 소프트웨어 리셋을 가능하게 했다. 이 방식은 성능 저하가 컸다.
- 제한적 활용: 많은 DOS 프로그램이 규칙을 따르지 않아, 32비트 인텔 80386이 나올 때까지 보호 모드는 널리 쓰이지 않았다.
- 모드 전환의 비효율성: 80286에서 도스나 바이오스(Basic Input/Output System)를 사용하면서 가상 기억 기능을 활용하려면 리얼 모드와 프로텍티드 모드 간 전환이 필요했지만, 80286은 프로텍티드 모드에서 리얼 모드로 돌아가는 명령어가 없어, CPU 리셋 신호선을 활성화해야만 했다.
- 하드웨어에 따른 리얼 모드 복귀 방법:
하드웨어 | 절차 |
---|---|
IBM PC/AT[40][41] | |
PC-9800 시리즈[42][43][44] |
- HMA 활용: 80286은 21번째 주소선(A20)을 활성화하여 리얼 모드에서도 64KB 정도의 상위 메모리 영역(HMA)을 참조할 수 있게 하였다.HMA 참조.[47] 이는 DOS 사용자들에게 메모리 부족 문제를 어느 정도 완화시켜 주었다.
4. 1. 보호 모드
80286은 x86 CPU 제품군 중 최초로 보호 모드를 지원했으며, 온칩 메모리 관리 장치(MMU) 기능을 갖춘 최초의 상업용 마이크로프로세서였다. 이를 통해 IBM 호환 기종은 처음으로 고급 멀티태스킹 운영 체제를 갖추게 되었고, 유닉스가 지배적인 네트워크 서버/워크스테이션 시장에서 경쟁할 수 있게 되었다.80286의 보호 모드는 멀티태스킹 운영 체제에 유용한 몇 가지 추가 명령을 도입했다. 또한 무단 액세스를 방지하는 기능을 제공했는데, 이는 다음과 같은 방식으로 구현되었다.
- 데이터, 코드 및 스택에 대해 서로 다른 세그먼트를 형성하고 겹치지 않도록 한다.
- 각 세그먼트에 권한 수준을 할당하여, 낮은 권한 수준의 세그먼트가 높은 권한 수준의 세그먼트에 액세스할 수 없도록 한다.
80286(및 코프로세서 인텔 80287)에서 산술 연산은 다음과 같은 다양한 유형의 숫자에 대해 수행할 수 있었다.
보호 모드를 지원하기 위해 ARPL, VERR, VERW, LAR, LSL, SMSW, SGDT, SIDT, SLDT, STR, LMSW, LGDT, LIDT, LLDT, LTR, CLTS 와 같은 새로운 명령이 추가되었다. 또한 잘못된 opcode, 코프로세서 사용 불가, 더블 폴트, 코프로세서 세그먼트 오버런, 스택 폴트, 세그먼트 오버런/일반 보호 폴트 및 보호 모드 전용 오류를 포함한 새로운 예외(내부 인터럽트)가 있다.
4. 2. 리얼 모드로의 복귀 문제
80286은 하드웨어 리셋 없이는 보호 모드에서 8086 호환 ''실 주소 모드''("실 모드")로 돌아갈 수 없도록 설계되었다.[40][41] 1984년 PC/AT 출시 당시, IBM은 외부 회로, ROM BIOS, 8042 키보드 마이크로컨트롤러에 특수 코드를 추가하여 소프트웨어 리셋을 가능하게 했다. 이를 통해 활성 메모리를 유지하고 리셋을 시작한 프로그램에 제어를 반환하며 실 모드로 재진입했지만, 성능 저하가 컸다. (BIOS는 CPU 리셋 시마다 직접 제어를 얻으므로 필수적이었다.)이론적으로 실 모드 응용 프로그램은 특정 규칙(80286 도입과 함께 새로 제안됨)을 따르면 16비트 보호 모드에서 직접 실행될 수 있었다. 그러나 많은 DOS 프로그램이 이 규칙을 따르지 않아, 32비트 인텔 80386이 나올 때까지 보호 모드는 널리 쓰이지 않았다. 80386은 모드 간 전환이 쉽고 보호 모드 내 실 모드 에뮬레이션을 제공하도록 설계되었다.
80286에서 도스나 바이오스(Basic Input/Output System)를 사용하면서 가상 기억 기능을 활용하려면 리얼 모드와 프로텍티드 모드 간 전환이 필요했다. 하지만 80286은 프로텍티드 모드에서 리얼 모드로 돌아가는 명령어가 없어, CPU 리셋 신호선을 활성화해야만 했다. 따라서 80286 탑재 기기들은 특정 I/O 포트를 조작해 CPU 리셋 펄스를 발생시키는 하드웨어를 갖췄고, 소프트웨어로 CPU 리셋이 가능했다. BIOS 초기화 프로그램은 일반 하드웨어 리셋(전원 ON, 리셋 스위치)과 소프트웨어 리셋을 구분해 초기화 방식을 전환해야 했다. 이 과정은 오버헤드가 커서, 80286에서 리얼/프로텍티드 모드 전환은 비효율적이었다.
80386 이후에는 양 모드 간 자유로운 전환 기능과 가상 86 모드 등이 제공되었다.
리얼 모드 복귀 방법은 하드웨어에 따라 달랐으며, 구체적인 절차는 다음과 같다.
하드웨어 | 절차 |
---|---|
IBM PC/AT[40][41] | |
PC-9800 시리즈[42][43][44] |
4. 3. HMA 활용
80286은 21번째 주소선(A20)을 활성화하여 리얼 모드에서도 64KB 정도의 상위 메모리 영역(HMA)을 참조할 수 있게 하였다.HMA 참조.[47] 이는 DOS 사용자들에게 메모리 부족 문제를 어느 정도 완화시켜 주었다. 80386 이후 프로세서에서도 HMA를 사용할 수 있다. HMA는 64KB 정도로, 640KB의 약 10%에 해당한다.5. 운영 체제 지원
80286의 보호 모드는 출시 초기에는 널리 사용되지 않았는데, 이는 확장 메모리 비용, 8086 PC와의 호환성 문제, 그리고 기존 DOS 프로그램과의 호환성 문제 때문이었다.[20] 1986년 PC DOS 3.0 및 3.1에 포함된 RAM 디스크 드라이버인 VDISK가 확장 메모리를 활용한 첫 사례였다. DOS는 BIOS 호출(INT 15h, AH=87h)을 통해 보호 모드(확장 메모리)에서 사용 가능한 추가 RAM을 활용할 수 있었다.[20]
80286의 보호 모드를 지원하는 운영 체제는 다음과 같다.
- Concurrent DOS 286: 디지털 리서치가 개발한 운영 체제로, 80286 네이티브 모드(보호 모드)에서 작동하여 멀티 유저, 멀티태스킹을 지원했다. IBM 4680 OS의 기반이 되었다.[23]
- FlexOS 286: Concurrent DOS 286의 파생물로, IBM 4690 OS에 채택되었다.
- OS/2 1.x: IBM과 마이크로소프트가 공동 개발한 운영 체제로, 1987년에 출시되었다.[39]
- XENIX: 마이크로소프트가 개발한 유닉스 기반 운영 체제이다.[25]
- Coherent[26]
- Minix[27]
Windows 3.x의 경우, Windows 3.0 및 영문판 Windows 3.1은 스탠다드 모드에서 80286의 보호 모드를 활용했다. 그러나 일본어판 Windows 3.1[35][36][37] 및 Windows for Workgroups 3.11[38] 이후 버전은 80286을 지원하지 않았다.
6. CPU 판별
80286에는 CPUID 명령이 없으며, 인텔은 플래그 레지스터를 사용한 CPU 판별 방법을 소개하고 있다.[50]
`PUSHF`/`POPF` 명령으로 읽고 쓸 수 있는 16비트 플래그 중 상위 4비트는 8086 세대(V30[51], 80186 등 포함)에서는 사용되지 않는 예약 비트였다. 실제로는 그 부분이 1111b로 읽혔지만 변경은 불가능했다. 80286에서는 이 부분이 보호 모드에서 사용되게 되어, 리얼 모드에서는 0으로 클리어된 상태가 되었다. 또한 가상 86 모드를 가진 80386부터는 리얼 모드에서도 이 비트를 변경할 수 있게 되었다. 즉, 리얼 모드 시점(BIOS 또는 MS-DOS)에서 플래그 레지스터의 bit15-12가 1111b에서 변경할 수 없으면 8086 세대, 0000b에서 변경할 수 없으면 80286, 그 어느 쪽도 아니며, 일부라도 변경 가능하면 80386 이후로 판단할 수 있다.
7. 추가/변경된 명령어
8086에서 사용할 수 있는 기본 명령 집합에 더하여, 80186과 공통으로 추가된 일반 명령어와 80286의 보호 모드를 지원하기 위해 추가된 시스템 명령어가 있다.[48]
7. 1. 추가된 일반 명령어 (80186과 공통)
8086에서 사용할 수 있는 기본 명령어 집합에 더하여, ENTER, LEAVE, BOUND, INS, OUTS, PUSHA, POPA, PUSH immediate, IMUL immediate, 즉시 시프트/로테이트 등의 명령어가 추가되었다.7. 2. 추가된 시스템 명령어 (보호 모드 관련)
80286의 보호 모드를 지원하기 위해 추가된 명령어는 다음과 같다:[48]명령어 | 설명 |
---|---|
ARPL | 요청된 특권 레벨 조정 (Adjust Requested Privilege Level) |
CLTS | 태스크 전환 플래그 초기화 (Clear Task Switched Flag) |
LAR | 접근 권한 적재 (Load Access Right) |
LGDT | 전역 디스크립터 테이블 레지스터 적재 (Load Global Descriptor Table Register) |
LIDT | 인터럽트 디스크립터 테이블 레지스터 적재 (Load Interrupt Descriptor Table Register) |
LLDT | 지역 디스크립터 테이블 레지스터 적재 (Load Local Descriptor Table Register) |
LMSW | 기계 상태 워드 적재 (Load Machine Status Word) |
LSL | 세그먼트 한계 적재 (Load Segment Limit) |
LTR | 태스크 레지스터 적재 (Load Task Register) |
SGDT | 전역 디스크립터 테이블 레지스터 저장 (Store Global Descriptor Table Register) |
SIDT | 인터럽트 디스크립터 테이블 레지스터 저장 (Store Interrupt Descriptor Table Register) |
SLDT | 지역 디스크립터 테이블 레지스터 저장 (Store Local Descriptor Table Register) |
SMSW | 기계 상태 워드 저장 (Store Machine Status Word) |
STR | 태스크 레지스터 저장 (Store Task Register) |
VERR | 읽기 접근 확인 (Verify Read Access) |
VERW | 쓰기 접근 확인 (Verify Write Access) |
이 외에도 잘못된 opcode, 코프로세서 사용 불가, 더블 폴트, 코프로세서 세그먼트 오버런, 스택 폴트, 세그먼트 오버런/일반 보호 폴트 및 보호 모드 전용 오류를 포함한 새로운 예외 (내부 인터럽트)가 있다.
7. 3. 폐지된 명령어
80286에서는 POP CS 명령(OP코드 0F)이 폐지되었다. 80186/V30도 마찬가지다. 이 OP코드는 80286 이후 확장 명령어의 프리픽스로 사용되었다.7. 4. 비공개 명령어
8086에서 사용할 수 있는 기본 명령 집합에 더하여, 80286의 비공개 명령인 LOADALL을 사용하면 리얼 모드 상태에서 보호 메모리를 포함한 16MB의 메모리에 접근할 수 있게 된다.[1]7. 5. 기존 명령어의 사양 변경
80286은 리얼 모드에서 8086 및 80186과 높은 호환성을 가지지만, 완전히 동일하지는 않다. 80286 이후에는 `PUSH SP` 명령의 동작이 변경되었다[53][54]。 또한 기존 명령의 조합으로도, 프로텍트 모드에서는 동작이 다른 경우가 있다[55]。이 외 변경점으로는, 시프트・로테이트 명령에서 지정할 수 있는 CL 레지스터의 값 및 즉시 값이 31 이하로 제한되었다. 지정할 수 있는 값은 8비트이지만, 실제로는 하위 5비트만 사용된다. 이 변경은 80186도 마찬가지지만, V30에서는 적용되지 않으며, 8086 상당의 동작을 한다. 예를 들어 시프트 명령에서 31 (16진수로 0x1F)을 초과하는 값을 지정한 경우, 8086 및 V30에서는 연산 결과가 반드시 0이 되지만, 80186/286 이후에서는 32로 나눈 나머지 만큼 시프트 연산이 된다.
나눗셈 오류 (인터럽트 0)가 발생한 경우, 스택에 저장되는 CS:IP는 8086에서는 나눗셈 오류를 발생시킨 다음 명령을 가리키지만, 80286에서는 나눗셈 오류를 발생시킨 명령 자체를 가리킨다.
8086에서는 FPU 명령 실행 중 `WAIT` 명령으로 CPU를 정지시켜야 했지만, 80186 이후에서는 그럴 필요가 없어졌다. 또한, `LOCK` 명령은 원래 모든 명령에서 버스를 잠글 수 있는 사양이었지만, 80286 이후에서는 잠글 수 있는 명령과 잠글 수 없는 명령이 정해져 있다.
8. 추가된 레지스터
인텔 80286의 보호 모드를 지원하기 위해 ARPL, VERR, VERW, LAR, LSL, SMSW, SGDT, SIDT, SLDT, STR, LMSW, LGDT, LIDT, LLDT, LTR, CLTS 등 새로운 명령어들이 추가되었다. 또한, 새로운 예외(내부 인터럽트)들도 추가되었다.[56] 이러한 추가된 레지스터 및 명령어에 대한 자세한 내용은 하위 섹션을 참고할 수 있다.
8. 1. 시스템 레지스터
인텔 80286의 보호 모드를 지원하기 위해 추가된 새로운 레지스터는 다음과 같다:- GDTR (전역 디스크립터 테이블 레지스터)
- IDTR (인터럽트 디스크립터 테이블 레지스터)
- LDTR (로컬 디스크립터 테이블 레지스터)
- TR (태스크 레지스터)
8. 2. 플래그 레지스터
80286의 16비트 플래그 레지스터에서 하위 12비트(비트 0~11)는 인텔 8086과 동일하다. 상위 4비트는 80186 이전에는 사용되지 않았지만, 80286에서는 멀티태스킹 운영 체제(OS)를 고려하여 새로운 플래그가 추가되었다.[56]- IOPL (IO Privilege Level) 플래그: 비트 12와 13을 사용하는 2비트 플래그이다. 0부터 3까지의 값을 가지며, IO 특권 레벨을 나타낸다. 일반적으로 `POPF` 명령어로만 변경할 수 있다.
- NT (Nested Task) 플래그: 비트 14에 해당한다. 뒷단의 태스크가 유효함을 나타내는 플래그로, 인터럽트 등으로 호출된 경우 1이 된다. 이 플래그에 따라 `IRET` 명령어의 리턴 처리 동작이 변경된다.[56]
비트 15는 예약 비트이며, 80286에서는 값이 불확정하다(80386 이후는 0).[56]
8. 3. MSW (Machine Status Word)
80286에는 MSW (Machine Status Word, 기계 상태 워드) 레지스터가 추가되었다. MSW를 읽고 쓰는 `LMSW`, `SMSW`라는 전용 명령어가 제공된다. MSW는 16비트이지만, 80286에서 정의된 것은 하위 4비트뿐이다. 80386 이후에는 새롭게 마련된 컨트롤 레지스터에 통합되어 CR0 레지스터의 하위 16비트가 MSW에 해당하지만, 호환성을 위해 MSW로도 접근할 수 있다.MSW의 각 비트는 다음과 같은 의미를 갖는다.
- PE (Protection Enable, 보호 활성화): MSW의 bit0. 보호 모드임을 나타낸다. 이 비트를 설정하면 보호 모드가 된다.
- MP (Math Present, 수학 프로세서 존재): MSW의 bit1. FPU가 존재할 경우 설정된다.
- EM (Emulate Math Coprocessor, 수학 보조 프로세서 에뮬레이션): MSW의 bit2. 이 비트가 설정되어 있으면 FPU가 없는 것으로 간주된다.
- TS (Task Switched, 작업 전환): MSW의 bit3. 태스크 전환 시 설정된다.
9. 인터럽트
8086에서는 인터럽트가 4번까지 정의되었지만, 80286에서는 5번 이후가 추가되었다. 인터럽트 5번부터 31번까지는 인텔에서 예약되었지만, IBM PC에서는 인터럽트 8번부터 15번까지를 8259A를 경유하는 외부 인터럽트에 할당했다. 보호 모드 OS/2 등은 8259A의 인터럽트 번호를 다른 값으로 변경한다[58]。
- 인터럽트 0: 분할 오류
- 분할 명령(DIV, IDIV)으로 0으로 나누려고 하거나, 몫이 너무 커서 레지스터에 들어가지 않을 때 발생한다.
- 인터럽트 1: 싱글 스텝 인터럽트
- 인터럽트 2: NMI(마스크 불가능 인터럽트)
- 인터럽트 3: 브레이크포인트 인터럽트
- 인터럽트 4: INTO 오버플로
- 인터럽트 5: 바운드 체크
- BOUND 명령에 지정된 오퍼랜드가 배열의 범위를 벗어났을 때 발생한다.
- 인터럽트 6: 무효 오퍼레이션 코드
- 인터럽트 7: 코프로세서 부재
- 태스크 스위치 후, 또는 80287이 장착되어 있지 않을 때 80287 명령을 실행하면 발생한다.
- 인터럽트 8: 더블 폴트
- 예외를 처리하는 중에 또 다른 예외가 발생하여 처리할 수 없게 되었을 때 발생한다.
- 인터럽트 9: 코프로세서 세그먼트 오버런
- 인터럽트 10: 무효 태스크 상태 세그먼트
- 인터럽트 11: 세그먼트 부재
- 메모리에 없는 스왑 아웃된 세그먼트에 접근했을 때 발생한다. 이 인터럽트는 80286의 보호 모드에서 가상 메모리를 위해 사용된다.
- 인터럽트 12: 스택 폴트
- 인터럽트 13: 일반 보호 예외
- 80286의 실 모드에서는 오프셋 FFFF에 있는 워드 오퍼랜드를 액세스하거나, 오프셋 FFFF부터 여러 바이트의 명령을 실행하려고 하면 발생한다. 8086에서는 오프셋 0으로 랩 어라운드되어 예외가 발생하지 않는다. 80286의 보호 모드에서는 데이터 세그먼트 내의 명령 실행, 코드 세그먼트 내의 데이터 변경, 현재 특권 레벨보다 높은 특권 레벨의 세그먼트에 대한 액세스 등에서도 일반 보호 예외가 발생한다.
- 인터럽트 14 - 15: 인텔 예약
- 인터럽트 16: 코프로세서 에러
- IBM PC/AT에서는 80287의 ERROR# 핀을 80286에 직결하지 않고, 인터럽트 컨트롤러 8259A에 연결하는 설계를 했다. 코프로세서(FPU)를 내장한 80486 이후의 CPU에서는 IBM PC/AT와의 호환성을 유지하기 위해 CPU에 FERR#, IGNNE#이라는 핀을 추가했지만, CR0 레지스터의 NE 비트를 1로 하면 8259A 경유가 아닌 원래의 인터럽트 16으로 코프로세서의 오류를 통지한다[48]。
- 인터럽트 17 - 31: 인텔 예약
10. 디스크립터 캐시
80286에서 세그먼트 레지스터는 가시부와 디스크립터 캐시부로 구성되며, 프로그램에서 직접 디스크립터 캐시부를 변경할 수 없다. 보호 모드에서는 세그먼트 레지스터 값을 변경할 때 글로벌 디스크립터 테이블 또는 로컬 디스크립터 테이블에서 디스크립터 캐시부로 접근 권한, 베이스 주소, 세그먼트 리미트 정보가 로드되며, 실제 메모리 접근에는 디스크립터 캐시부가 사용된다.
리얼 모드에서는 세그먼트 레지스터 값을 변경할 때, 세그먼트 레지스터 내용의 16배 값이 디스크립터 캐시부의 베이스 주소에 로드되며, 실제 메모리 접근에는 디스크립터 캐시부가 사용된다. 따라서 리얼 모드에서 보호 모드로 전환된 직후, 세그먼트 레지스터 값이 보호 모드에서 유효하지 않더라도 정지나 예외가 발생하지 않는다.
80286은 전원을 켜거나 리셋한 후에는 코드 세그먼트의 디스크립터 캐시부에 베이스 주소가 FF0000H로 설정되고, IP는 FFF0으로 설정되어 FFFFF0H부터 실행이 시작되는 특수한 리얼 모드로 시작한다. 이 특수한 상태는 CALL FAR, JMP FAR 명령어 등으로 세그먼트 레지스터가 갱신될 때까지 유지된다.
가시부 | 디스크립터 캐시부 | ||
---|---|---|---|
세그먼트 레지스터 | 베이스 주소(24비트) | 접근 권한(8비트) | 세그먼트 리미트(16비트) |
11. 주변 LSI
- 80287 NPX
: 80286용 수치 연산 보조 프로세서이다. 8086용 보조 프로세서인 8087과 달리 I/O 포트 (00F8H - 00FDH)를 사용하여 데이터와 명령을 주고받는다. 패키지는 40핀 DIP이다.
: 인텔은 1985년경에 후지쯔에 이 82284 버전을 2차 소싱했다.[31] 인텔 브랜드 칩셋은 1986년 1분기에 샘플링 형태로 20핀 PLCC로 제공되었다.[15]
- 82288 버스 컨트롤러
- 82289 중재기
- 8259A 인터럽트 컨트롤러
- 82230/82231 고집적 AT 호환 칩 세트
: 82230은 82C284 클럭, 82288 버스 컨트롤러, 듀얼 8259A 인터럽트 컨트롤러를 포함한 칩 조합이다. 82231은 8254 인터럽트 타이머, 74LS612 메모리 매퍼 및 듀얼 8237A DMA 컨트롤러를 포함한 칩 조합이다. Zymos Corp.를 통해 2차 소싱이 가능했다. 두 세트 모두 100개 수량 기준으로 10MHz 버전은 60USD, 12MHz 버전은 90USD에 판매되었다.[29]
- 82258 고급 직접 메모리 접근 컨트롤러
: 초당 8MB의 전송 속도, 최대 32개의 서브 채널 지원, 마스크 및 비교, 확인, 변환 및 동시에 처리되는 조립/분해 작업을 지원한다. 또한 16MB 주소 지정 범위를 지원한다. 이 제품은 100개 수량 기준으로 170USD에 판매되었다.[30]
12. CPU 액셀러레이터
80286 시스템은 CPU 액셀러레이터 제품을 통해 상위 프로세서로 업그레이드할 수 있었다. 486 상당의 제품은 부팅 후 소프트웨어로 CPU 캐시를 활성화하여 속도를 높여야 했다[59]。PC-9800 시리즈와 EPSON PC-286 시리즈에서는 80286을 소켓 방식으로 탑재한 기종이 많아 CPU 교체가 용이했다.
- ABM 486GT-X는 486 호환 프로세서를 80286 핀 호환의 원칩 사이즈로 만든 것으로, CPU 액셀러레이터라기보다는 80286 핀 호환 CPU에 가까웠다.
- Cyrix Cx486DLC와 같은 외부 32비트 프로세서를 구동하는 CPU 액셀러레이터 기판도 있었다.
- 멜코는 시스템 버스 클록과 관계없이 독립 클록으로 동작하는 제품도 출시했다.
- 멜코나 아이・오・데이터 기기에서 판매되던 IBM 486SLC2를 사용한 80286용 제품은 최대 4배속 (약 50MHz)으로 동작했다[63]。
많은 80286용 CPU 액셀러레이터는 기판에 80387 소켓이나 호환 칩을 직접 부착하여 386/486 호환 CPU로 교체할 때 80387 상당의 수치 연산 기능을 사용할 수 있게 되었다[64]。
PC-9800 시리즈에서는 80286 시스템[65]과 i386 이상 시스템[66]에서 A20 라인을 제어하는 I/O 포트가 달라, MS-DOS에 부속된 메모리 매니저(HIMEM.SYS)가 A20 라인을 정상적으로 제어할 수 없다는 경고를 내는 문제가 있었다. 일부 CPU 액셀러레이터는 독자적인 메모리 매니저를 제공하여 이 문제를 해결했다.
일본어판 Windows 3.1은 80286을 지원하지 않아[35][36][37], CPU를 i386 이상으로 업그레이드해도 마더보드가 80286용이면 설치가 중단되는 경우가 있었다. 일부 80286용 CPU 액셀러레이터는 Windows 3.1 설치를 가능하게 하는 툴을 제공했다[69]。
하지만 80286 시스템은 CPU를 업그레이드해도 메모리 제약이 남아 Windows를 쾌적하게 사용하기 어려웠다. Windows 95나 98은 OS 자체가 80286 이하 마더보드를 감지하여 부팅을 멈추는 사양[72]이므로, 80286 마더보드에서 구동하기 위해서는 별도의 조치가 필요했다.
참조
[1]
웹사이트
CPU History - The CPU Museum - Life Cycle of the CPU
https://www.cpushack[...]
2021-09-06
[2]
간행물
Chip Design: A Race Worth Winning
Intel Corporation
1988-07-01
[3]
웹사이트
1.5 μm lithography process - WikiChip
https://en.wikichip.[...]
2019-01-21
[4]
웹사이트
Microprocessor Hall of Fame
http://www.intel.com[...]
Intel
2007-08-11
[5]
서적
iAPX 286 Programmer's Reference
http://bitsavers.org[...]
Intel
2017-08-28
[6]
문서
A simpler cousin in the 8086-line with integrated peripherals, intended for embedded systems.
[7]
웹사이트
Intel Museum – Microprocessor Hall of Fame
http://www.intel.com[...]
Intel.com
2009-06-20
[8]
간행물
What's Next For The 80286?
Intel Corporation
1987-11-01
[9]
웹사이트
Intel Architecure [sic] Programming and Information
http://www.intel8038[...]
Intel80386.com
2009-04-28
[10]
웹사이트
80286 Microprocessor Package, 1982
http://content.cdlib[...]
Content.cdlib.org
2009-04-28
[11]
간행물
NewsBits: Second Source News
Intel Corporation
1985-01-01
[12]
문서
In quantities of 100.
[13]
간행물
New Product Focus Components: 80286 Workhorses: Twice As Fast
Intel Corporation
1985-07-01
[14]
간행물
New Product Focus Components: Highest Ranking 16-bit Microprocessor Meets Military Objectives
Intel Corporation
1985-09-01
[15]
간행물
Advanced Packaging: A Little Goes A Long Way
Intel Corporation
1986-01-01
[16]
문서
Sampling Q3 1985
[17]
문서
Sampling Q2 1986
[18]
뉴스
The Technology Paradox
https://www.bloomber[...]
Bloomberg
1995-03-06
[19]
웹사이트
Intel 80286 microprocessor family
http://www.cpu-world[...]
CPU-World
2012-05-19
[20]
서적
Microprocessors: 8086/8088, 80186/80286, 80386/80486 and the Pentium Family
PHI Learning Pvt. Ltd
2016-10-11
[21]
간행물
New Product Focus Components: Highest Ranking 16-bit Microprocessor Meets Military Objectives
Intel Corporation
1985-09-01
[22]
저널
Obstacles to a grown up operating system
https://books.google[...]
2016-10-11
[23]
잡지
IBM to use a DRI operating system
https://books.google[...]
1986-02-10
[24]
서적
Microprocessors: A Programmer's View
https://archive.org/[...]
New York: McGraw-Hill
[25]
웹사이트
Microsoft XENIX 3.0 Ready for 286
http://www.tenox.net[...]
[26]
웹사이트
An Introduction to Coherent: General Information FAQ for the Coherent Operating System
http://textfiles.com[...]
2014-01-07
[27]
웹사이트
MINIX INFORMATION SHEET
http://minix.net/min[...]
[28]
잡지
Intel's 32-bit Wonder: The 80386 Microprocessor
1986-11-25
[29]
간행물
New Product Focus: Components: Intel's 82X3X Chip-set Handles Logic Functions That Once Required The Services Of Sources Of Chips
Intel Corporation
1988-01-01
[30]
간행물
New Product Focus Components: The 82258 ADMA Boost iAPX 286 Family Performance
Intel Corporation
1984-11-01
[31]
간행물
NewsBits: Second Source News
Intel Corporation
1985-01-01
[32]
웹사이트
Soviet microprocessors, microcontrollers, FPU chips and their western analogs
https://www.cpu-worl[...]
CPU-world
2016-03-24
[33]
웹아카이브
iAPX 286 Programmer's Reference Manual including the iAPX 286 Numeric Supplement
https://archive.org/[...]
[34]
문서
iAPX 286 - 80286 CPU family
[35]
서적
Microsoft Windows Operating System Version 3.1 お使いになる前に
Microsoft Corporation
[36]
서적
日本語Microsoft WIndows バージョン 3.1 ライセンス情報
日本アイ・ビー・エム
[37]
웹사이트
NEC版Windows 3.1
http://121ware.com/s[...]
[38]
웹사이트
Windows for Workgroups Version History
https://archive.li/5[...]
[39]
웹사이트
OS/2の歩みを振り返る
https://pc.watch.imp[...]
[40]
웹사이트
Protected Mode Basics by Robert Collins
http://www.rcollins.[...]
[41]
서적
トランジスタ技術 SPECIAL 特集 IBM PC & 80286のすべて
[42]
웹사이트
システムポート
http://www.webtech.c[...]
ウェブテクノロジ
2018-01-06
[43]
웹사이트
BIOSが使用するシステム共通域
http://www.webtech.c[...]
ウェブテクノロジ
2018-01-06
[44]
웹사이트
CPU,CPU周辺が使用するI/O
http://www.webtech.c[...]
ウェブテクノロジ
2018-01-06
[45]
웹사이트
PC-9801VX
http://121ware.com/s[...]
[46]
문서
I/Oポートに関する記述
[47]
문서
address space wrap-aroundに関する記述
[48]
웹사이트
Intel 64 and IA-32 Architectures Software Developer Manuals
https://software.int[...]
[49]
서적
80386システムプログラム
オーム社
[50]
웹사이트
インテル(R) プロセッサの識別とCPUID命令
https://www.intel.co[...]
インテル
2017-12-05
[51]
문서
8086/80186/V30 플래그 레지스터 비트 사용에 대한 설명
[52]
문서
x86 조건 점프 명령어에 대한 설명
[53]
문서
8086과 80286 PUSH SP 명령어 동작 차이에 대한 설명
[54]
학술지
Tutor: Distinguishing among CPUs
https://books.google[...]
2016-11-20
[55]
문서
80286 플래그 레지스터 예약 비트 사용 및 POPF 명령 동작에 대한 설명
[56]
문서
V30 CPU의 비트 15(에뮬레이션 모드 플래그)에 대한 설명
[57]
서적
98ハードに強くなる本II
[58]
웹사이트
Int 50 - IRQ0 relocated by OS/2 v1.x
http://www.ctyme.com[...]
[59]
문서
80286 시스템에서 486 호환 CPU 교체 시 CPU 캐시 동작에 대한 설명
[60]
문서
8086/V30 CPU와 CPU 액셀러레이터에 대한 설명
[61]
문서
i386SX CPU와 CPU 액셀러레이터 호환성에 대한 설명
[62]
서적
PC-98パワーアップ道場
ソフトバンククリエイティブ
[63]
웹사이트
PK-X486S50-L
http://www.iodata.co[...]
[64]
웹사이트
別売の数値演算コプロセッサ HSC-40
https://web.archive.[...]
[65]
문서
i386DX 탑재 PC-98XL²에 대한 설명
[66]
문서
PC-98XL²를 제외한 시스템에 대한 설명
[67]
문서
I/O 포트 00F2h에 대한 설명
[68]
웹사이트
Windows 3.1 Hardware Compatibility List - Microsoft
https://support.micr[...]
[69]
웹사이트
HRX-C12Q캐시 제어 유틸리티
http://buffalo.jp/qa[...]
[70]
문서
EMS 페이지 프레임과 프로텍트 메모리 데이터 복사 방식에 대한 설명
[71]
문서
Expanded Memory Specification
[72]
문서
메모리 체크
[73]
문서
Windows 3.1 설치
[74]
문서
IO.SYS
[75]
웹인용
Microprocessor Hall of Fame
http://www.intel.com[...]
Intel
2007-08-11
[76]
웹사이트
Official Intel iAPX 286 programmers' manual
http://bitsavers.tra[...]
2014-03-19
관련 사건 타임라인
( 최근 20개의 뉴스만 표기 됩니다. )
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com